const db = require('./config/database');
const bcrypt = require('bcryptjs');

async function createSimpleTestData() {
  try {
    console.log('开始创建简化测试数据...');

    // 1. 创建管理员账户
    const hashedPassword = await bcrypt.hash('admin123', 10);
    
    // 检查管理员是否已存在
    const existingAdmin = await db.findOne('admins', { username: 'admin' });
    if (!existingAdmin) {
      await db.insert('admins', {
        username: 'admin',
        password: hashedPassword,
        real_name: '系统管理员',
        role: 'super_admin',
        is_active: 1,
        created_at: new Date(),
        updated_at: new Date()
      });
      console.log('✓ 管理员账户创建成功');
    } else {
      console.log('✓ 管理员账户已存在');
    }

    // 2. 直接创建测试线索（不依赖用户表）
    const testClues = [
      {
        clue_no: 'CL' + new Date().toISOString().slice(0, 10).replace(/-/g, '') + '0001',
        user_id: null, // 匿名用户
        category: '经济犯罪',
        title: '测试线索1 - 经济诈骗案',
        content: '这是一个测试线索的详细描述，涉及经济诈骗活动。内容长度超过20个字符以满足验证要求。',
        suspect_info: '张某某，男，35岁，身份证号：123456789012345678',
        incident_time: '2025-06-15 10:00:00',
        incident_location: '测试市测试区测试街道123号',
        status: 'pending',
        priority: 2,
        is_public: 0,
        view_count: 0,
        created_at: new Date(),
        updated_at: new Date()
      },
      {
        clue_no: 'CL' + new Date().toISOString().slice(0, 10).replace(/-/g, '') + '0002',
        user_id: null,
        category: '涉黑涉恶',
        title: '测试线索2 - 涉恶团伙案',
        content: '发现涉恶团伙活动线索，需要进一步调查核实。该团伙涉嫌多项违法犯罪活动。',
        suspect_info: '李某某等3人，具体信息待查',
        incident_time: '2025-06-16 14:30:00',
        incident_location: '测试市测试区另一街道456号',
        status: 'processing',
        priority: 3,
        is_public: 0,
        view_count: 5,
        created_at: new Date(),
        updated_at: new Date()
      },
      {
        clue_no: 'CL' + new Date().toISOString().slice(0, 10).replace(/-/g, '') + '0003',
        user_id: null,
        category: '毒品犯罪',
        title: '测试线索3 - 毒品交易案',
        content: '发现可疑毒品交易活动，地点在城郊某废弃厂房。交易时间通常在深夜进行。',
        suspect_info: '王某某，约30岁，驾驶黑色轿车',
        incident_time: '2025-06-17 23:00:00',
        incident_location: '测试市郊区废弃厂房',
        status: 'completed',
        priority: 3,
        is_public: 0,
        view_count: 12,
        created_at: new Date(),
        updated_at: new Date()
      }
    ];

    for (const clue of testClues) {
      const existing = await db.findOne('clues', { clue_no: clue.clue_no });
      if (!existing) {
        const clueResult = await db.insert('clues', clue);
        console.log(`✓ 测试线索 "${clue.title}" 创建成功，ID: ${clueResult.insertId}`);
        
        // 为每个线索创建一些处理历史记录
        const admin = await db.findOne('admins', { username: 'admin' });
        if (admin) {
          await db.insert('clue_processing_logs', {
            clue_id: clueResult.insertId,
            admin_id: admin.id,
            admin_name: admin.real_name,
            action_type: 'status_change',
            old_value: 'pending',
            new_value: clue.status,
            processing_opinion: `线索已${clue.status === 'pending' ? '提交' : clue.status === 'processing' ? '开始处理' : '处理完成'}`,
            ip_address: '127.0.0.1',
            user_agent: 'Test Script',
            created_at: new Date()
          });
          console.log(`  ✓ 处理历史记录创建成功`);
        }
      } else {
        console.log(`✓ 测试线索 "${clue.title}" 已存在`);
      }
    }

    console.log('✅ 简化测试数据创建完成！');
    console.log('');
    console.log('管理员账户信息：');
    console.log('用户名: admin');
    console.log('密码: admin123');
    console.log('');
    console.log('可以使用以下URL进行测试：');
    console.log('- 管理后台: http://localhost:3001/admin/');
    console.log('- 调试页面: http://localhost:3001/admin/debug.html');

  } catch (error) {
    console.error('创建测试数据失败:', error);
  } finally {
    process.exit(0);
  }
}

// 运行脚本
createSimpleTestData(); 